// keyof 是ts类型操作符
// keyof + 对象类型  ，拿到这个对象类型的  键名生成的  文字类型 的 联合
type Point = { x: number; y: number };
type P = keyof Point;  // 等价于 type p = "x" | "y"
const dada:P = "x"
type Arr = [number]

// keyof + 数组/元组类型 ，得到这个数组或元组的 每一项的 类型 的 联合
type Oa = keyof Arr
const adasd:Oa = 1 

type Arrayish = { [n: number]: unknown };
type Aa = keyof Arrayish;
    const adawe:Aa = 1

    type Mapish = { [k: string]: boolean };
type M2 = keyof Mapish;
        const adswe:M2 = 1
    // keyof + 带索引签名的对象类型。得到number|索引签名的类型